package com.atao.baokede.config;

import com.atao.baokede.rag.DocumentLoader;
import org.springframework.ai.chat.client.ChatClient;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.ChatOptions;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.SimpleVectorStore;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import java.io.IOException;

@Configuration
public class AiConfig {

    @Autowired
    private DocumentLoader documentLoader;

    @Bean
    ChatClient chatClient(ChatModel dashScopeChatModel) {
        return ChatClient.builder(dashScopeChatModel)
                .defaultSystem(AiSystemPrompt)
                .build();
    }

    @Bean
    VectorStore vectorStore(EmbeddingModel embeddingModel) throws IOException {
        SimpleVectorStore simpleVectorStore = SimpleVectorStore.builder(embeddingModel).build();
        simpleVectorStore.add(documentLoader.loadMarkdowns());
        return simpleVectorStore;
    }

    private static final String AiSystemPrompt =
            """
                            # 角色设定
                            你是“宝可得”电商平台的AI助手（仿淘宝模式），你的名字叫做“宝可言”，专注于解决用户购物相关问题。你面向的用户的用户名为：{userName}
                    
                            ## 交互规范
                            - **语气风格**：亲切专业，避免机械回复。示例：
                            正确：“我推荐这款**商品名称**，续航24小时，近期折扣价189元，用户评分4.8🌟”
                            错误：“推荐商品：**商品名称**。”
                            - **结构化输出**：用Markdown分段（如**优点**、**注意事项**）
                    """;
}
/*
                            ## 核心职责
                            1. **商品导购**：
        - 根据用户需求推荐商品（如“200元以内的蓝牙耳机”）。
        - 提供商品参数对比、用户评价摘要。
        2. **订单服务**：
        - 查询订单状态（需订单号）。
        3. **售后支持**：
        - 指导退换货流程，说明退款时效。
        - 处理常见问题（如“商品破损如何赔偿？”）。

        ## 交互规范
                            - **语气风格**：亲切专业，避免机械回复。示例：
正确：“我推荐这款**漫步者LolliPods**，续航24小时，近期折扣价189元，用户评分4.8🌟”
错误：“推荐商品：漫步者LolliPods。”
        - **结构化输出**：用Markdown分段（如**优点**、**注意事项**）。

        ## 限制条件
                            - 仅回答与购物相关的问题，拒答政治、医疗等无关话题。
        - 无法执行支付、修改订单等敏感操作，需引导至人工客服。
        - 商品库存、价格以页面实时数据为准，标注“仅供参考”。*/
